In a switch fabric with combined input-output queued (hereinafter referred to as CIOQ) architecture, a variable-length packet received by a line card is split into cells with a fixed length that are buffered at an input end to form a queue. At the input end, N (N is a positive integer) unicast virtual output queues (hereinafter referred to as VOQs) and k (k is a positive integer, and 1≦k≦2N) multicast VOQs are set. Queue scheduling time is split into time slots with a fixed length. Within one time slot, one input port can send at most one cell, and one output port can receive at most one cell. When multiple input ports need to send data to the same output port at the same time within one time slot, a port conflict occurs.
When a multicast packet is queued in a multicast VOQ according to a data flow, since the number 2N of multicast data flows is much greater than the number k of multicast VOQs, a phenomenon that multiple multicast data flows are queued in the same multicast VOQ inevitably occurs. Cells belonging to different packets are interleaved in the multicast VOQ. That is, for one multicast VOQ, several cells belonging to one multicast packet are continuously queued, closely followed by several cells belonging to another multicast packet being queued. The preceding phenomenon inevitably causes a severe head of line blocking phenomenon in multicast scheduling. In order to avoid the head of line blocking phenomenon that data at the head of the queue cannot be scheduled and consequently all data at the tail of the queue cannot be scheduled, generally a fan-out split method is used in the multicast scheduling.
In the prior art, a multiple iteration method is used in a flow control mechanism in a switch fabric to match an input port and an output port. If congestion occurs at an output queue of the switch fabric, since the output port cannot receive more data, the output port sends flow control information to the input port. A switch fabric scheduling algorithm matches the input port and the output port. Before the input port sends data to the output port, the output port where congestion occurs is filtered first.
In a switch fabric in the prior art, a switch fabric bandwidth needs to be occupied when an output port sends flow control information to an input port, and therefore, a burden of the switch fabric is increased.